package com.itheima.jwt;

import io.jsonwebtoken.Claims;
import io.jsonwebtoken.JwtBuilder;
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;
import org.junit.Test;

import java.util.Date;

/**
 * @author wz
 * @company 公司
 * @create 2020-03-12 15:25
 */
public class jwtTest {
    public static void main(String[] args) {
        long currentTimeMillis = System.currentTimeMillis();
        Date date = new Date(currentTimeMillis);
        JwtBuilder builder = Jwts.builder()
                .setId("888") //设置唯一编号
                .setSubject("王振") //设置主题 可以是JSON数据
                .setIssuedAt(new Date()) //设置签发日期
                .setExpiration(date) //设置token过期时间
                .signWith(SignatureAlgorithm.HS256,"itcast"); //设置签名 使用HS256算法并设置SecretKey(字符串)
        //构建 并返回一个字符串
        System.out.println(builder.compact());
        System.out.println("=====================>");
        String compactJwt="eyJhbGciOiJIUzI1NiJ9.eyJqdGkiOiI4ODgiLCJzdWIiOiLnjovmjK8iLCJpYXQiOjE1ODM5OTkyMDksImV4cCI6MTU4Mzk5OTIwOX0.KZJdPsf0X8yLgZys6NUwCwm9K_QDVhb1bVs3yOm4Rds";
        Claims claims = Jwts.parser().setSigningKey("itcast").parseClaimsJws(compactJwt).getBody();
        System.out.println(claims);

    }
    @Test
    public void test(){
        //自定义claims
        long currentTimeMillis = System.currentTimeMillis();
        Date date = new Date(currentTimeMillis);
        JwtBuilder builder = Jwts.builder()
                .setId("888") //设置唯一编号
                .setSubject("王振") //设置主题 可以是JSON数据
                .setIssuedAt(new Date()) //设置签发日期
                .claim("roles","admin") //设置角色
//                .setExpiration(date) //设置token过期时间
                .signWith(SignatureAlgorithm.HS256,"itcast"); //设置签名 使用HS256算法并设置SecretKey(字符串)
        //构建 并返回一个字符串
        System.out.println(builder.compact());

        String jwt = "eyJhbGciOiJIUzI1NiJ9.eyJqdGkiOiI4ODgiLCJzdWIiOiLnjovmjK8iLCJpYXQiOjE1ODQwMDU1ODcsInJvbGVzIjoiYWRtaW4ifQ.IxmzDrkCOZgCSAlxz79MHwRSVkaE_t6txquXVtf5dV8";
        Claims itcast = Jwts.parser().setSigningKey("itcast").parseClaimsJws(jwt).getBody();
        System.out.println(itcast);
    }

}
